package com.gylang.dict.repository;

import com.gylang.api.BaseResultCode;
import com.gylang.api.domain.EnumDictWrapper;
import com.gylang.common.core.page.TableDataInfo;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
 * @author gylang
 * data 2021/6/17
 */
@Component
public class ListEnumDictRepositoryImpl implements EnumDictRepository {


	private List<EnumDictWrapper> enumDictWrapperList;

	@Override
	public List<EnumDictWrapper> match(Predicate<EnumDictWrapper> match) {

		return enumDictWrapperList.stream()
			.filter(match)
			.collect(Collectors.toList());
	}

	@Override
	public Long total() {
		return (long) enumDictWrapperList.size();
	}

	@Override
	public TableDataInfo<EnumDictWrapper> matchLimit(Predicate<EnumDictWrapper> match, long page, long size) {
		long skip = (page - 1) * size;
		List<EnumDictWrapper> list = enumDictWrapperList.stream()
			.filter(match)
			.collect(Collectors.toList());
		TableDataInfo<EnumDictWrapper> dataInfo = new TableDataInfo<>();
		dataInfo.setTotal(list.size());
		list = list.stream()
			.skip(skip)
			.limit(size).collect(Collectors.toList());
		dataInfo.setRows(list);
		dataInfo.setCode(BaseResultCode.OK.getCode());
		dataInfo.setMsg("查询成功");
		return dataInfo;
	}

	@Override
	public EnumDictWrapper findOne(String name) {
		return enumDictWrapperList.stream()
			.filter(d -> d.getName().equals(name))
			.findFirst().orElse(null);
	}

	@Override
	public void init(List<EnumDictWrapper> enumDictWrapperList) {
		this.enumDictWrapperList = enumDictWrapperList;
	}


}
